package com.cskaoyan.javase.oop2._1extends._10final._1clazz;

/**
 * final修饰类时，表示最后的类，最终的类。即表示这个类不能被继承。
 * 语法：
 * [访问权限修饰符] final class 类名{
 *  //类体
 * }
 *
 * 说明：
 * final修饰class后，该类就无法被继承了。
 * 但是该类的其他使用不会受到影响，比如创建对象，调用方法等等。
 * 其它方面，它仍然还是一个普通的类。
 *
 * 思考：什么样的类需要设置成final？
 * 不需要，不想要被子类继承的类，才需要设置为final修饰。
 * 当你认为当一个类的设计已经足够完善，功能足够强大了，不需要再让子类去扩展它了。
 * 这时出于安全的考虑，就可以将一个类设置为final。
 * 这样类中成员，既不会被继承，更不会被修改。
 *
 * 正常情况下，我们很少会主动把一个类设置成final，因为没有太多的必要性。
 * 实际开发中，也要慎重将一个类设置final。
 * 常见的final修饰的类，都在JDK的源码当中。
 * 比如四类八种基本数据类型的包装类、Void、String、System、Scanner等等。
 *
 * @since 10:54
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Father f = new Father(100);
        f.test();
    }
}

final class Father {
    int num = 10;

    public void test() {

    }

    public Father() {
    }

    public Father(int num) {
        this.num = num;
    }
}
// Cannot inherit from final 'com.cskaoyan.javase.oop2._1extends._10final._1clazz.Father'
/*
class Son extends Father {
}*/
